package com.zynote.nfhoujie.web.controller;

import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import com.google.gson.Gson;
import com.zynote.commons.utils.InitSetting;
import com.zynote.commons.utils.Page;
import com.zynote.nfhoujie.commons.constants.CommodityConstants;
import com.zynote.nfhoujie.commons.constants.SettingConstants;
import com.zynote.nfhoujie.commons.utils.SessionUtil;
import com.zynote.nfhoujie.model.User;
import com.zynote.nfhoujie.web.form.CommodityForm;
import com.zynote.nfhoujie.model.Commodity;
import com.zynote.nfhoujie.model.view.MultiCommodityView;
import com.zynote.nfhoujie.service.ICommodityService;

/**
 * 
 * @className:UserController.java
 * @classDescription:用户控制器
 * @author: AIDAN SU
 * @createTime: 2012-10-26
 *
 */

@Controller
@RequestMapping(value="/user")
public class PersionalIndexController {
	
	@Resource
	private ICommodityService commodityService ;
	
	/**
	 * 首页
	 * @param modelMap
	 * @param request
	 * @return
	 */
	@RequestMapping(value="/index" ,method = RequestMethod.GET)
	public String index(ModelMap modelMap , HttpServletRequest request ){

		// 判断用户是否已经登陆
		if( SessionUtil.isLogin( request ) ){
			modelMap.put("user", SessionUtil.getUserFromSession(request));
			return "/commodity/index";
		}else{
			return "/login";
		}
	}
	
	/**
	 *  错误提示
	 * @return
	 */
	@RequestMapping(value="/error" ,method = RequestMethod.GET)
	public String error(){
		return "error";
	}
	
//	/**
//	 * 用户发布的商品信息列表
//	 * @return
//	 */
//	@RequestMapping(value="/commodity/list" ,method = RequestMethod.GET)
//	@ResponseBody
//	public String commodityList( ModelMap modelMap, HttpServletRequest request ){
//		
//		// 存放json数据
//		String jsonResult = "" ;
//		// 查询数据的总数
//		int total = 0 ; 
//		// 分页开始位置
//		int startPosition = 0;
//		
//		try{
//			// 通过配置文件获取分页的大小
//			String perPageSize = InitSetting.getValueByKey(SettingConstants.COMMODITY_PER_PAGE_SIZE);
//			int pageSize = Integer.valueOf(perPageSize).intValue();
//			
//			// 通过参数获取用户ID
//			String uid = request.getParameter("uid");
//			Long userId = null;
//			if( StringUtils.isNotEmpty(uid) ){
//				userId = Long.parseLong(uid);
//			}else{
//				// 从Session中获取用户信息
//				User user = (User) SessionUtil.getUserFromSession(request);
//				userId = user.getUid();
//			}
//			
//			// 通过参数获取分页的开始位置
//			String offset = request.getParameter("offset");
//	    	if( StringUtils.isNotEmpty(offset) ){
//	    		startPosition = Integer.parseInt(offset)*pageSize;
//	    	}
//	    	
//	    	// 通过用户ID统计用户发布的商品总数
//	    	total = commodityService.countCommoditys(userId);
//	    	
//	    	// 用户有发布产品
//	    	if(total>0){
//	    		
//	    		List<MultiCommodityView>  commodityList = commodityService.listMyCommoditys(startPosition, pageSize, userId);	    		
//	    		Page page = new Page();
//	            page.setDatas(commodityList);
//	            page.setPageSize( pageSize );
//	            page.setTotal( total );
//	            
//	            // 转为json数据
//				Gson gson = new Gson();
//				jsonResult = gson.toJson(page);
//	    	}
//	    	
//		}catch(Exception e){
//			e.printStackTrace();
//		}
//        
//		return jsonResult;
//	}
//	
//	/**
//	 * 跳转到修改商品页面
//	 * @param articleForm
//	 * @param modelMap
//	 * @param request
//	 * @return
//	 */
//	@RequestMapping( value="/commodity/update", method =RequestMethod.GET)
//	public String jumpUdateCommodity( ModelMap modelMap, HttpServletRequest request ){
//		
//		// 商品父类别
//		Integer parentCategory = null;
//		// 商品ID
//		Long commodityId = null;
//		// 跳转路径
//		String url = null;
//		// 商品类
//		Commodity commodity = null;
//		
//		try{
//			
//			// 通过参数获取商品ID
//			String spid = request.getParameter("spid");
//			if( StringUtils.isNotEmpty(spid) ){
//				commodityId = Long.parseLong(spid);
//				
//				// 通过商品ID找到该商品
//				commodity = commodityService.findCommodityById( commodityId );
//			}				
//			
//			// 通过参数获取商品的父类别
//			String pcat = request.getParameter("pcat");
//			if( StringUtils.isNotEmpty(pcat) ){
//				parentCategory = Integer.parseInt(pcat);
//			}
//			switch(parentCategory){
//				case 1000:{
//					modelMap.put("book", commodity);
//					url = "/user/book_update";
//					break;
//				}case 2000:{
//					modelMap.put("dailyuse", commodity);
//					url = "/user/dailyuse_update";
//					break;
//				}case 3000:{
//					modelMap.put("jobs", commodity);
//					url = "/user/jobs_update";
//					break;
//				}case 4000:{
//					modelMap.put("exchange", commodity);
//					url = "/user/exchange_update";
//					break;
//				}
//			}		
//		}catch(Exception e){
//			e.printStackTrace();
//		}
//		
//		return url;
//	}
	
	/**
	 * 
	 * 删除发布的产品
	 * @param id
	 * @param commodityForm
	 * @param modelMap
	 * @param request
	 * @return
	 */	
	@RequestMapping(value="/commodity/delete" ,method = RequestMethod.GET)
	public String deleteCommodity(CommodityForm commodityForm  , ModelMap modelMap , HttpServletRequest request){
		try{			
			// 通过参数获取商品ID
			String spid = request.getParameter("spid");
			if( StringUtils.isNotEmpty(spid) ){
				Long commodityId = Long.parseLong(spid);
				
				// 通过商品ID找到该商品
				commodityService.deleteCommodityById(commodityId);
			}	
		}catch(Exception e){
			e.printStackTrace();
		}
		return "redirect:/user/commodity/list";
	}

	/**
	 * 发布二手图书
	 * @param CommodityForm
	 * @param modelMap
	 * @param request
	 * @return
	 */
	@RequestMapping( value="/release/book" )
	public String addNewBook(@ModelAttribute  CommodityForm commodityForm  , ModelMap modelMap , HttpServletRequest request ){
			
		try {
			// 从Session中获取用户信息
			User user = (User) SessionUtil.getUserFromSession(request);
			// 实例化Commodity类
			Commodity commodity = new Commodity();
			
			// 把获取的数据复制到commodity类中
			PropertyUtils.copyProperties(commodity, commodityForm);
			
			// 添加用户ID
			commodity.setUid(user.getUid());		
			// 添加当前时间
			commodity.setWriteTime( new Date() );
			// 添加商品父类别
			commodity.setParentCategory(1000);
			// 添加商品交易状态
			commodity.setCommodityStatus(1);
			
			// 创建商品信息记录
			commodityService.createCommodity(commodity);
			
			modelMap.put("book",commodity);
			
		} catch (Exception e) {
			e.printStackTrace();
		} 
		
		return "/commodity/book";
	}				
	
}
